Computing architectures often use a client-server model. The client-server model has centralized machines providing resources or services called servers. Resources or services are provided to distributed devices called clients. A typical mode of operation for a client-server relationship is for a client to request a service from the server, the server then executes an application or carries out some task involving data or functions available to the server, and finally the server completes the loop by providing some level of feedback or results to the client. This activity is generally carried out over a network, but a client-server model may be employed on a single machine (e.g., a personal computer acting as server and client).
The client-server model offers several benefits over alternative architectures like peer-to-peer. In the peer-to-peer model, the architecture includes only client devices. Resources of each client are shared for the benefit of an entire network. Conversely, in the client-server architecture, client resources are not utilized via the server, and therefore are only available to the client. The server, being centralized, acts as a hub of activity and sits in a position to control resources, services, or access to either. Client-server architectures are easier to maintain and can be more reliable because very little relies on the individual clients.
Many common systems have adopted the client-server model. A simple example is a basic website. The application that is the website resides on a server on a network. Clients may gain access to that website through a client interface or web browser in most cases. Client activity is translated to service requests from the client to the server. The server replies by executing the website application. Another common example is an email system. Each email account is a client and operates via requests to the email server. Many other examples exist such as: web servers, file transfer protocol (FTP) servers, application servers, database servers, name servers, print servers and so on.
One of the great benefits of the client-server model is security. The server acts as gatekeeper to all services, data, and resources available to clients. A key element to that security is the ability to establish a secure relationship between the client and server. Once established, the secure relationship allows a free exchange of services and data between the client and server. A corollary to the ability to establish secure relationships is the ability to invalidate. Over time those secure relationships become needless, compromised, or simply stale. Invalidating secure relationships frees up resources on the server to be allocated to other clients.